home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Applications 2004 May / SGI IRIX 6.5 Applications 2004 May.iso / dist / java3d.idb / usr / demos / java / j3d / programs / examples / PrintCanvas3D / ImagePrinter.java.z / ImagePrinter.java
Encoding:
Java Source  |  2003-08-08  |  3.4 KB  |  106 lines

  1. /*
  2.  *    @(#)ImagePrinter.java 1.5 02/04/01 15:04:11
  3.  *
  4.  * Copyright (c) 1996-2002 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  *
  10.  * - Redistributions of source code must retain the above copyright
  11.  *   notice, this list of conditions and the following disclaimer.
  12.  *
  13.  * - Redistribution in binary form must reproduce the above copyright
  14.  *   notice, this list of conditions and the following disclaimer in
  15.  *   the documentation and/or other materials provided with the
  16.  *   distribution.
  17.  *
  18.  * Neither the name of Sun Microsystems, Inc. or the names of
  19.  * contributors may be used to endorse or promote products derived
  20.  * from this software without specific prior written permission.
  21.  *
  22.  * This software is provided "AS IS," without a warranty of any
  23.  * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
  24.  * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
  25.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
  26.  * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
  27.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  28.  * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
  29.  * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
  30.  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
  31.  * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
  32.  * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
  33.  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  34.  *
  35.  * You acknowledge that Software is not designed,licensed or intended
  36.  * for use in the design, construction, operation or maintenance of
  37.  * any nuclear facility.
  38.  */
  39.  
  40. import java.awt.print.*;
  41. import java.awt.Graphics;
  42. import java.awt.Graphics2D;
  43. import java.awt.Image;
  44. import java.awt.image.BufferedImage;
  45. import java.awt.image.ImageObserver;
  46. import java.awt.geom.AffineTransform;
  47.  
  48. class ImagePrinter implements Printable, ImageObserver {
  49.     BufferedImage bImage;
  50.  
  51.     public int print(Graphics g, PageFormat pf, int pi)
  52.     throws PrinterException {
  53.  
  54.  
  55.     if (pi >= 1) {
  56.         return Printable.NO_SUCH_PAGE;
  57.     }
  58.  
  59.     Graphics2D g2d = (Graphics2D)g;
  60.     //g2d.translate(pf.getImageableX(), pf.getImageableY());
  61.     AffineTransform t2d = new AffineTransform();
  62.     t2d.translate(pf.getImageableX(), pf.getImageableY());
  63.     double xscale  = pf.getImageableWidth() / (double)bImage.getWidth();
  64.     double yscale  = pf.getImageableHeight() / (double)bImage.getHeight();
  65.     double scale = Math.min(xscale, yscale);
  66.     t2d.scale(scale, scale);
  67.     try {
  68.         g2d.drawImage(bImage,t2d, this);
  69.     }
  70.     catch (Exception ex) {
  71.         ex.printStackTrace();
  72.         return Printable.NO_SUCH_PAGE;
  73.     }
  74.     return Printable.PAGE_EXISTS;
  75.     }
  76.  
  77.     void print() {
  78.     PrinterJob printJob = PrinterJob.getPrinterJob();
  79.     PageFormat pageFormat = printJob.defaultPage();
  80.     pageFormat.setOrientation(PageFormat.LANDSCAPE);
  81.     pageFormat = printJob.validatePage(pageFormat);
  82.     printJob.setPrintable(this, pageFormat);
  83.     if (printJob.printDialog()) {
  84.         try {
  85.         printJob.print();
  86.         }
  87.         catch (PrinterException ex) {
  88.         ex.printStackTrace();
  89.         }
  90.     }
  91.     }
  92.  
  93.     public boolean imageUpdate(Image img,
  94.                    int infoflags,
  95.                    int x,
  96.                    int y,
  97.                    int width,
  98.                    int height) {
  99.     return false;
  100.     }
  101.  
  102.     ImagePrinter(BufferedImage bImage) {
  103.     this.bImage = bImage;
  104.     }
  105. }
  106.